SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE ProcEDURE [dbo].[SP_TASALD_EMPR_I03]   
/*---------------------------------------------------------------------*/  
/*----- Empresa          : OFISIS S.A.                            -----*/  
/*----- Cliente          : OFISIS S.A.                            -----*/  
/*----- Sistema          : Contabilidad                           -----*/  
/*----- Modulo           : Empresa                                -----*/  
/*----- Programa         : Mayorizacion                           -----*/  
/*----- Nombre           : SP_TASALD_EMPR_I03                   -----*/  
/*----- Script           : TASALD_EMPR                            -----*/  
/*----- Desarrollado     : Mar?a Laura Uribe                      -----*/  
/*----- Fecha            : 24/05/1999                             -----*/  
/*----- Base de Datos    : MS SQL Server                          -----*/  
/*----- Version BD       : 6.5                                    -----*/  
/*----- Invoca a SP      :                                        -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 1 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 05/06/2004                             -----*/  
/*----- Detalle Modifica : usuario creacion y modif               -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 2 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 30/06/2006                             -----*/  
/*----- Detalle Modifica : se aumento el tama?o de la @VSNV_QUIE_CNTA de 10 a 40-----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Modificado 3 por : percy garcia                           -----*/  
/*----- Fecha Modifica   : 26/06/2009                             -----*/  
/*----- Detalle Modifica : se ordeno join en insert select -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Comentarios      : Inserta saldos                         -----*/  
/*---------------------------------------------------------------------*/  
/*---------------------------------------------------------------------*/  
/*----- Drop Proc SP_TASALD_EMPR_I03                              -----*/  
/*----- Grant Execute On SP_TASALD_EMPR_I03 To PUBLIC             -----*/  
/*----- SP_TASALD_EMPR_I03                                     -----*/  
/*---------------------------------------------------------------------*/    
(  
@ISCO_EMPR    TD_VC_002,  
@ISCO_USUA          TD_VC_008,
@IDFE_USUA          TD_DT_001,
@ISCO_UNID_CNTB    TD_VC_003,  
@INNU_CNTB_EMPR    TD_IN_001,  
@INNU_ANNO_0001    TD_IN_004_ANNO,  
@INNU_MESE_0001    TD_IN_002_MESE,  
@INNU_ANNO_0002    TD_IN_004_ANNO,  
@INNU_MESE_0002    TD_IN_002_MESE )  
As  
Declare  
  @VNNV_INFO_CNTA         TD_IN_001,  
  @VSNV_QUIE_CNTA         TD_VC_040,  
  @VNCA_INIC              TD_IN_001,  
  @VNCA_LONG              TD_IN_001,  
  @VNCA_LONG_AUXI         TD_IN_001,  
  @VNNV_AUXI              TD_IN_001,  
  @VNNU_FINA              TD_IN_001  
  
Begin  
  -- Selecciona Datos de Nivel Informacion y NUmeros de Quiebre  
  Select @VNNV_INFO_CNTA = NV_INFO_CNTA,  
         @VSNV_QUIE_CNTA = NV_QUIE_CNTA    
  From   TMPARA_CONT  
  Where  CO_EMPR = @ISCO_EMPR  
  
 Select @VNCA_LONG = DataLength(Rtrim(@VSNV_QUIE_CNTA)) -1  
 Select @VNNU_FINA = 1  
  
  -- Empieza a Trabajar  
  While @VNNU_FINA = 1  
  Begin  
    -- Selecciona   
    -- la cadena es '020305'  
    Select @VNCA_INIC = @VNCA_LONG - 2  
    Select @VNCA_LONG = @VNCA_LONG - 2  
    Select @VNNV_AUXI = Convert(Int, Substring(@VSNV_QUIE_CNTA,@VNCA_INIC,2))  
  
    -- Select @VNCA_INIC,@VNCA_LONG, @VNNV_AUXI  
    -- El Nivel Detalle ya existe y si es cero no se hace nada  
    If ( @VNNV_AUXI < @VNNV_INFO_CNTA ) And ( @VNNV_AUXI > 0 )  
    Begin  
       -- Inserta en la Tabla de Saldos  
       Insert into TASALD_EMPR (CO_EMPR, CO_UNID_CNTB, NU_CNTB_EMPR, NU_ANNO, NU_MESE, CO_CNTA_EMPR,  
       IM_CARG_CNTB, IM_ABON_CNTB, PR_DATO, CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA )  
       Select @ISCO_EMPR, CO_UNID_CNTB, @INNU_CNTB_EMPR, @INNU_ANNO_0001, NU_MESE,   
       Substring(CO_CNTA_EMPR,1,@VNNV_AUXI), Isnull(Sum(Isnull(IM_CARG_CNTB, 0)), 0),   
       Isnull(Sum(Isnull(IM_ABON_CNTB, 0)), 0), Max(PR_DATO),
             @ISCO_USUA, @IDFE_USUA ,@ISCO_USUA , @IDFE_USUA  
       From TASALD_EMPR  
       Where CO_EMPR = @ISCO_EMPR  
       And   NU_CNTB_EMPR = @INNU_CNTB_EMPR  
       And   NU_ANNO = @INNU_ANNO_0001  
       And   NU_MESE >= @INNU_MESE_0001  
       And   NU_MESE <= @INNU_MESE_0002  
       And   TI_AUXI_EMPR Is Null   
       And   CO_AUXI_EMPR Is Null   
       And   CO_ORDE_SERV Is Null   
       And   Datalength(CO_CNTA_EMPR) = @VNNV_INFO_CNTA  
       Group By NU_MESE, CO_UNID_CNTB, Substring(CO_CNTA_EMPR,1,@VNNV_AUXI)  
  
    End  
    -- Para slir del Loop  
    If @VNCA_INIC <= 0   
     Select @VNNU_FINA = 0  
  End -- del While  
End  
  
/*------------------------ Fin ----------------------*/  






GO
